home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ccdl150l.zip / IO / FFLUSH.C < prev    next >
C/C++ Source or Header  |  1996-07-26  |  1KB  |  50 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <memory.h>
  4. #include <libp.h>
  5.  
  6. extern FILE *_pstreams[_NFILE_];
  7. extern char *_filenames[_NFILE_];
  8. extern int maxfiles;
  9.  
  10. static int oneflush(FILE *stream)
  11. {
  12.     int rv = 0;
  13.     if (stream->token == FILTOK) {
  14.         if (stream->buffer)
  15.             if (stream->flags & _F_OUT) {
  16.                 rv = _ll_write(stream->fd,stream->buffer,stream->level);
  17.                 if (!rv) {
  18.                     stream->flags |= _F_ERR;
  19.                     rv = EOF;
  20.                 }
  21.                 else rv = 0;
  22.                 stream->level = 0;
  23.             }
  24.             else if (stream->flags & _F_READ) {
  25.                 memset(stream->buffer,0,stream->bsize);
  26.                 stream->level = 0;
  27.             }
  28.         stream->hold = 0;
  29.         stream->curp = stream->buffer;
  30.         if (stream->flags & _F_IN) 
  31.             _ll_seek(stream->fd,_ll_getpos(stream->fd)-stream->level,SEEK_SET);
  32.         stream->flags &= ~(_F_IN | _F_OUT);
  33.         return rv;            
  34.     }
  35.     else {
  36.         return EOF;
  37.     }
  38. }
  39. int fflush(FILE *stream)
  40. {
  41.     int rv;
  42.     if (stream)
  43.         return(oneflush(stream));
  44.     else {
  45.         int i;
  46.         for (i=0; i < maxfiles; i++)
  47.             rv |= oneflush(_pstreams[i]);
  48.     }
  49.     return rv;
  50. }